package utp.tepc.usina;

import java.util.Random;

/**
 * @author Jackson
 * @version 1.0
 * @created 09-jun-2011 20:31:02
 */
public class ControleOcorrencia
{
    private static ControleOcorrencia instance;

    private ControleOcorrencia()
    {
    }

    public TipoOcorrencia getOcorrencia(Object obj) throws Exception
    {
	if (obj instanceof Otimo)
	    return this.ocorrenciaOtimoTempPressao();

	if (obj instanceof IEqualizacao)
	    return this.ocorrenicaEqualizacao();

	throw new Exception("ERRO NA SIMULAÇÂO DE OCORRENCIA");
    }

    public static ControleOcorrencia getInstancia()
    {
	if (instance == null)
	    instance = new ControleOcorrencia();

	return instance;
    }

    private int randOcorrencia()
    {
	Random variaOcor = new Random();
	int value = variaOcor.nextInt(10);
	return value;
    }

    private TipoOcorrencia ocorrenciaOtimoTempPressao()
    {
	int ocor = this.randOcorrencia();

	if (ocor <= 8)
	    return TipoOcorrencia.Otimo;

	return TipoOcorrencia.NaoOtimo;
    }

    private TipoOcorrencia ocorrenicaEqualizacao()
    {
	int ocor = this.randOcorrencia();

	if (ocor >= 0 && ocor <= 1)
	    return TipoOcorrencia.Abrupto;

	if (ocor > 1 && ocor <= 3)
	    return TipoOcorrencia.Normal;

	return TipoOcorrencia.Lenta;
    }
}